/*
 * Nodo.java
 *
 * Created on 5 de mayo de 2007, 09:34 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package adsi.branchbound3;
import java.util.*;
/**
 *
 * @author Aramis
 */
public class Nodo {
    
    Tarea tarea;
    Nodo padre;
    int nivel;
    int Lnodo;
    int Cnodo;
    Vector apuntadores=new Vector();
    boolean disponible;
    /** Creates a new instance of Nodo */
    public Nodo() 
    {
        nivel=0;
        Lnodo=0;
        Cnodo=0;
        tarea=null;
        padre=null;
        
    }
    public Nodo(Tarea t, int niv, Nodo p)
    {
        nivel=niv;
        tarea=t;
        padre=p;
        disponible=true;
    }
    public Nodo(Tarea t)
    {
        nivel=0;
        tarea=t;
        padre=null;
        disponible=true;
    }
    public int calculaLNodo()
    {
        int ln=0;
        return ln;
    }
    
    public int calculaCNodo(Vector sec)
    {
        int t=0;
        int i;
        for(i=0;i<sec.size();i++)
        {
            if(((Tarea) sec.get(i)).rj <= t) //Tarea disponible
                t = t + ((Tarea) sec.get(i)).pj;
            else
                t = ((Tarea) sec.get(i)).rj + ((Tarea) sec.get(i)).pj;
        }
        Cnodo=t;
        Lnodo=Cnodo-tarea.dj;
        return t;
    }
    
    public int calculaLmax()
    {
        int l=Lnodo;
        int i;
        Nodo p = this.padre;
        while(p!=null)
        {
            if(p.Lnodo>l)
                l=p.Lnodo;
            p=p.padre;
        }
        return l;
    }
    public Nodo regresaPadre()
    {
        return padre;
    }
    public void noDisponible()
    {
        disponible=false;
    }
    public Vector secuencia()
    {
        Vector secu=new Vector();
        secu.add(0,this.tarea);
        Nodo n=padre;
        while(n!=null)
        {
            secu.add(0,n.tarea);
            n=n.padre;
        }
        return secu;
    }
    
}
